package br.ufrj.dcc.comp2.musica.modelo;

import java.io.Serializable;
import java.util.Comparator;

import br.ufrj.dcc.comp2.musica.controle.Musica;

public class ComparadorCursoObrigatorio implements
		Comparator<SolicitacaoInscricao>, Serializable {
	private static final long serialVersionUID = 1L;
	
	boolean o1Obrigatorio, o2Obrigatorio;
	private ComparadorCra comparador = new ComparadorCra();
	public int compare(SolicitacaoInscricao o1, SolicitacaoInscricao o2) {
		checaObrigatoriedade(o1, o1Obrigatorio);
		checaObrigatoriedade(o2, o2Obrigatorio);

		if (o1Obrigatorio == o2Obrigatorio) {
			return comparador.compare(o1, o2);
		} else {
			if (o1Obrigatorio) {
				return 1;
			} else {
				return -1;
			}
		}

	}

	private void checaObrigatoriedade(SolicitacaoInscricao o, Boolean oObrigatorio) {
		oObrigatorio = Musica.getInstancia().getMapas().getMapaCursos().get(
				o.getAluno().getCurso()).getListaDisciplinas().contains(
				o.getTurma().getDisciplina());
	}

}
